package com.cmc.cloud.cmclink.doc.service;

import com.cmc.cloud.cmclink.doc.entity.PortDescDO;
import com.cmc.cloud.cmclink.doc.vo.portdesc.PortDescCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.portdesc.PortDescInfoRespVO;
import com.cmc.cloud.cmclink.doc.vo.portdesc.PortDescPageReqVO;
import com.cmc.cloud.cmclink.doc.vo.portdesc.PortDescUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 港口描述 Service 接口
 *
 * @author 集运管理员
 */
public interface PortDescService {

    /**
     * 创建港口描述
     *
     * @param createReqVO 创建信息
     */
    void createPortDesc(@Valid PortDescCreateReqVO createReqVO);

    /**
     * 更新港口描述
     *
     * @param updateReqVO 更新信息
     */
    void updatePortDesc(@Valid PortDescUpdateReqVO updateReqVO);

    /**
     * 删除港口描述
     *
     * @param id 编号
     */
    void deletePortDesc(Long id);

    /**
     * 获得港口描述
     *
     * @param id 编号
     * @return 港口描述
     */
    PortDescDO getPortDesc(Long id);

    /**
     * 获得港口描述列表
     *
     * @param ids 编号
     * @return 港口描述列表
     */
    List<PortDescDO> getPortDescList(Collection<Long> ids);

    /**
     * 获得港口描述分页
     *
     * @param pageReqVO 分页查询
     * @return 港口描述分页
     */
    PageResult<PortDescDO> getPortDescPage(PortDescPageReqVO pageReqVO);

    /**
     * 校验港口是否有默认的描述
     *
     * @param portCode
     * @param id
     * @return
     */
    Boolean checkPortIsDefault(String portCode, Long id);

    /**
     * 获取港口信息
     *
     * @param port
     * @return
     */
    List<PortDescInfoRespVO> getPortDescInfo(List<String> port);

}
